/**
 * 删除值在s-t之间的元素
 * 
 * 和上一题类似，只不过是比较条件变了
 * 算法思想：从前向后扫描L，k记录扫描到的元素满足“在s和t之间”这个条件的个数，
 * 将满足的元素向前移动k个位置，否则k++
 * 
 * 对于{1,2,3,4,5,6} 删除3-4
 * i=0,k=0 
 * [0]=1 不满足，将i往前移动0个位置（也就是本身）
 * i=1,k=0
 * [1]=2 不满足, 将i往前移动0个位置（也就是本身）
 * i=2,k=0
 * [2]=3 满足  k++  k=1
 * i=3,k=1
 * [3]=4 满足 k++ k=2
 * i=4 k=2
 * [4]=5 不满足，将i往前移动2个位置移动到4-2=2  ，这里的移动，实际上是赋值，原来的元素没有变，只是值无效了 {1,2,5[移动后],4,5[当前],6}
 * ......
 */

#include<stdbool.h>

typedef int ElementType;

#define MAX_LENGTH 100
typedef struct{
    ElementType data[MAX_LENGTH];
    int size;
} SqList;

bool remove_between(SqList*l,ElementType s,ElementType t){
    int i,k=0;
    if(l->size==0||s>=t){
        return false;
    }
    for(i=0;i<l->size;i++){
        if(l->data[i]>=s&&l->data[i]<=t){//在范围里
            k++;
        }else{//不在范围里
            l->data[i-k]=l->data[i];
        }
    }
    l->size-=k;
    return true;
}